package com.rengwuxian.coursecoroutines._2_structured_concurrency

import kotlinx.coroutines.runBlocking
import kotlin.concurrent.thread

/**
 * 线程的强制结束：stop()
 * Thread.stop()
 *
 * 协程的取消和线程的取消都是交互式逻辑
 * 协程是脱离不了线程的背景知识的。线程没有过时。
 *
 * thread.stop() 废弃了20多年，兼容旧代码。
 * 这种方式过于野蛮，调用之后线程就被杀了，不管执行到哪行代码，带来完全不可预期的后果。
 * 把内存里的对象都能回调，让对象出于不前不后的状态，程序的状态信息都错乱了，无法修复，只能重启程序。
 * 它的工作机制，导致它非常不稳定，绝对不能在商业项目上使用。
 */
fun main() = runBlocking<Unit> {
  val thread = thread {
    println("Thread: I'm running!")
    Thread.sleep(200)
    println("Thread: I'm done!")
  }
  Thread.sleep(100)
  thread.stop()
}